import logging 
from . import api

from flask import json, render_template
from werkzeug.exceptions import HTTPException

logger = logging.getLogger("app.api.errors")

@api.errorhandler(Exception)
def handle_exception(e):
    """
    如果是JenkinsException, 则只有错误信息，来自Jenkins的错误信息被Python-Jenkins组件重新打包了。
    """
    # print(type(e))
    # print(e)
    # """Return JSON instead of HTML for HTTP errors."""
    # start with the correct headers and status code from the error
    # response = e.get_response()
    # # replace the body with JSON
    # response.data = json.dumps({
    #     "code": e.code,
    #     "name": e.name,
    #     "description": e.description,
    # })
    # response.content_type = "application/json"
    logger.error(str(e))
    return {'errcode': 10000, 'errmsg': str(e)}, 500

@api.errorhandler(500)
def internal_error(error):
    # 这里可以记录错误日志，通过error参数获取错误信息
    # 你可以将用户重定向到一个错误页面，或者返回一个JSON错误响应
    print(error)
    return "An internal error occurred. Please try again later.", 500

@api.errorhandler(401)
def internal_error(error):
    # 这里可以记录错误日志，通过error参数获取错误信息
    # 你可以将用户重定向到一个错误页面，或者返回一个JSON错误响应
    print(error)
    return "An internal error occurred. Please try again later.", 401


@api.errorhandler(404)
def page_not_found_error(error):
    # 这里可以记录错误日志，通过error参数获取错误信息
    # 你可以将用户重定向到一个错误页面，或者返回一个JSON错误响应
    print(error)
    print('my 404')
    return render_template('404.html'), 500